#include <stdio.h>

// 二叉链表
typedef char DataType;
typedef struct node
{
    DataType data;
    struct node * lchild, * rchild;
} BinTNode;

typedef BinTNode *BinTree;

// str为存储广义表的字符串的指针
BinTNode *CreateTree(char *str){
    // 用指针数组模拟栈
    BinTNode *St[100];  
    BinTNode *p = NULL;
    int top, k, j=0;
    top=-1;   // 置空栈
    char ch=str[j];
    BinTNode *b=NULL;
    while (ch!='\0')
    {
        switch (ch)
        {
        case '(':
            top++; St[top]=p;k=1;
            break;
        case ')':
            top--;break;
        case ',':
            k=2;break;
        default:
            p=(BinTNode *)malloc(sizeof(BinTNode));
            p->data=ch;
            p->lchild=p->rchild=NULL;
            if(b==NULL){
                b=p;
            }else{
                switch (k)
                {
                case 1:St[top] ->lchild=p;break;
                case 2:St[top] ->rchild=p;break;
                }
            }
        }
        j++; ch=str[j];
    }
    return b;
}